package com.cloud.utils;

import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;

import java.io.InputStream;

/**
 * 二维码工具
 *
 * @author yzj
 */
public class QrCodeUtils {

    /**
     * 生成二维码
     *
     * @param logoUrl 二维码Logo
     * @param content 二维码内容
     */
    public static void createQRCode(String logoUrl, String content) {
        QrConfig config = new QrConfig(300, 300);
        // 设置边距,既二维码和背景之间的边距
        config.setMargin(3);
        if (StringUtils.isNotEmpty(logoUrl)) {
            // 设置Logo小图标
            config.create().setImg(logoUrl);
        }
        // 设置纠错级别
        config.setErrorCorrection(ErrorCorrectionLevel.H);
        try {
            HttpServletResponse response = ServletUtils.getResponse();
            // 生成二维码到文件,也可以到流
            response.setHeader("Content-Type", "image/jpg");
            QrCodeUtil.generate(content, config, "jpg", response.getOutputStream());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 识别二维码中的内容
     *
     * @param file
     * @return
     */
    public static String spotQRCode(InputStream file) {
        return QrCodeUtil.decode(file);
    }

}
